package comportement;

import InterfaceGraphique.BoiteMessage;
import cartes.Carte;
import cartes.Classe;
import cartes.Race;
import common.Constantes;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import plateau.Joueur;
import plateau.exceptions.DefausserClasseRaceException;

public class Mourir implements IncidentFacheux, Serializable {

    protected int raceExcl = Constantes.UNDEFINED;
    protected int classeExcl = Constantes.UNDEFINED;
    
    public Mourir() {
    }
    
    public Mourir(String cat, int excl) {
        if( cat.equals(Constantes.C_RACE) ) {
            this.raceExcl = excl;
        }
        else if( cat.equals(Constantes.C_CLASSE) ) {
            this.classeExcl = excl;
        }
    }

    public void provoquer(Joueur j) {
        if( !j.getInventaire().getClasse().contains(this.classeExcl) && !j.getInventaire().getRace().contains(this.raceExcl) )
        {
            j.upNiveau(-12, Boolean.FALSE);
            j.mourir();
        }
            
            
        else if( this.raceExcl != Constantes.UNDEFINED ) {
            for ( Carte c : j.getInventaire().getCartesRace() ) {
                if ( ((Race) c).getRace() == raceExcl) {
                    try {
                        j.defausserInventaire(c);
                    } catch (DefausserClasseRaceException ex) {
                        new BoiteMessage(ex.getMessage());
                    }
                }
            }
        }
        else if( this.classeExcl != Constantes.UNDEFINED ) {
            for ( Carte c : j.getInventaire().getCartesClasse() ) {
                if ( ((Classe) c).getTypeClasse() == classeExcl) {
                    try {
                        j.defausserInventaire(c);
                    } catch (DefausserClasseRaceException ex) {
                        new BoiteMessage(ex.getMessage());
                    }
                }
            }
        }
        
        
    }

    public String getDescription() {
        String description;
        description = "Vous mourrez. Pas de chance..." ;
        return description;
    }


}